__version__ = "1.1.0"
from decimal import Decimal, ROUND_HALF_UP

# 四舍五入保留两位小数

def decimal_money(money):
    """
    2025-02-12 shp 保留两位小数四舍五入
    入参:
    money 要四舍五入的金钱
    :return:
    format_money(Decimal): 返回两位小数的
    """
    format_money = Decimal(money).quantize(Decimal("0.00"), rounding=ROUND_HALF_UP)
    return format_money

# 将数字转中文大写
def num_to_cn_upper(amount):
    """
    2025-02-12 shp 将数字转中文大写
    入参:
    amount 要转的数值
    :return:
    result(str): 大写金钱
    """
    if int(amount) == 0:
        return "零元整"
    units = ['元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿']
    digits = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
    decimals = ['角', '分']

    integer_part = int(amount)
    decimal_part = decimal_money(amount - integer_part)
    result = ''
    # 处理整数部分
    integer_part_str = str(integer_part)
    for i, digit in enumerate(integer_part_str):
        if digit != '0':
            result += digits[int(digit)]
            result += units[len(integer_part_str) - i - 1]
        else:
            # 如果前一位不是零，则添加零
            if i > 0 and integer_part_str[i - 1] != '0':
                result += digits[0]
    # 处理小数部分
    if decimal_part > 0:
        decimal_part_str = str(decimal_part)[2:]
        for i, digit in enumerate(decimal_part_str):
            result += digits[int(digit)]
            result += decimals[i]
    else:
        result += "整"
    return result


